package pe.gob.mintra.trabajadoreshogar.daoimpl;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;

import pe.gob.mintra.trabajadoreshogar.bean.DatLab;
import pe.gob.mintra.trabajadoreshogar.bean.Gratifpnav;
import pe.gob.mintra.trabajadoreshogar.bean.Liquidacion;
import pe.gob.mintra.trabajadoreshogar.bean.Provincia;
import pe.gob.mintra.trabajadoreshogar.bean.VwGrati;
import pe.gob.mintra.trabajadoreshogar.dao.GratificacionDAO;
import pe.gob.mintra.trabajadoreshogar.factory.MyBatisConnectionFactory;


public class GratificacionDAOImp implements GratificacionDAO {
	
	private final static Logger logGratificacionDAOImp = Logger.getLogger(GratificacionDAOImp.class);
	private SqlSessionFactory sqlSessionFactory;

	public GratificacionDAOImp() {
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}
	

	@Override
	public void insertarGratificacion(Gratifpnav objGratificacion){
		
		SqlSession session = sqlSessionFactory.openSession();

		try {
			session.insert("Gratificacion.insertarGratificacion",objGratificacion);
			
		} 
		catch(Exception ex){
			session.rollback();
			logGratificacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}

	}


	@Override
	public List<Gratifpnav> obtenerGratificacion(Liquidacion objLiquidacion) {
		List<Gratifpnav> objGratificacion = new ArrayList<Gratifpnav>();
		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			objGratificacion = (List<Gratifpnav>) session.selectList(
					"Gratificacion.obtenerGratificacion", objLiquidacion);
		}catch(Exception ex){
			logGratificacionDAOImp.error(ex.getMessage());
		}finally{
			session.close();
		}
		

		return objGratificacion;
	}


	@Override
	public void eliminarGratificacion(Gratifpnav objGratificacion) {
		
		SqlSession session = sqlSessionFactory.openSession();

		try {
			
			session.delete("Gratificacion.eliminarGratificacion",objGratificacion);
		} 
		catch(Exception ex){
			session.rollback();
			logGratificacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}
		
	}


	@Override
	public void actualizarGratificacion(Gratifpnav objGratificacion) {
		
		SqlSession session = sqlSessionFactory.openSession();

		try {
			session.update("Gratificacion.actualizarGratificacion",objGratificacion);
			
		} 
		catch(Exception ex){
			session.rollback();
			logGratificacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}

		
	}


	@Override
	public void insertarGratificacionInterno(Gratifpnav objGratificacion) {
		SqlSession session = sqlSessionFactory.openSession();

		try {
			session.insert("Gratificacion.insertarGratificacionInterno",objGratificacion);
			
		} 
		catch(Exception ex){
			session.rollback();
			logGratificacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}
		
	}


	@Override
	public List<VwGrati> lstGratiReporte(DatLab objDatLab) {
		
		List<VwGrati> lstVistaGrati = new ArrayList<VwGrati>();
		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstVistaGrati = (List<VwGrati>) session.selectList(
					"Gratificacion.obtenerVistaGratificacion", objDatLab);
		}catch(Exception ex){
			logGratificacionDAOImp.error(ex.getMessage());
		}finally{
			session.close();
		}
		

		return lstVistaGrati;
	}

}
